/**
 * @description ajax请求的封装
 */

const BASE_URL = 'http://139.9.177.51:3701'; // 接口请求的 URL


/* ajax方法 */
function ajax(options) {
    // 默认参数
    const defaultOpts = {
        method: 'get',
        data: {},
        headers: {}
    }




    // url: url,
    // method: 'post',
    // data,
    // success: callback,


    // 合并参数
    const params = Object.assign({}, defaultOpts, options)
    console.log(params);
    // 获取参数值
    let method = params.method
    let url = BASE_URL + params.url
    let data = params.data
    let success = params.success
    let headers = params.headers

    // 发送ajax
    const xhr = new XMLHttpRequest()
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4 && xhr.status === 200) {
            let response = JSON.parse(xhr.responseText)
            success(response)
        }
    }



    if (method === 'get') {
        // 处理参数
        let str = ''
        Object.keys(data).forEach(function(key) {
            str += `&${key}=${data[key]}`
        })
        str = str ? '?' + str.slice(1) : ''
        xhr.open(method, url + str)

        Object.keys(headers).length && Object.keys(headers).forEach(function(key) {
            xhr.setRequestHeader(key, headers[key])
        })

        xhr.send()

    } else {
        xhr.open(method, url)
        xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');

        Object.keys(headers).length && Object.keys(headers).forEach(function(key) {
            xhr.setRequestHeader(key, headers[key])
        })

        xhr.send(JSON.stringify(data))
    }
}

/* 简洁版的 get 封装 */
function get(url, callback) {
    ajax({
        url: url,
        method: 'get',
        success: callback,
    })
}

/* 简洁版的 post 封装 */
function post(url, data, callback) {
    ajax({
        url: url,
        method: 'post',
        data,
        success: callback,
    })
}



/* 导出 */
module.exports = {
    ajax,
    get,
    post
}